import numpy as np
import matplotlib.pyplot as plt

# 一元数值微分
def numerical_diff(f,x):
    h = 1e-4 # 定义一个微小的值
    return (f(x+h)-f(x-h))/(2*h)

# 定义一个一元函数
def function_1(x):
    return 0.01*x**2+0.1*x

# 一元函数切线：斜截式
def tangent_line(f,x):
    d = numerical_diff(f,x) # 给定点的斜率
    y = f(x)-d*x # 根据两点式求截距
    return lambda t: d*t+y

x = np.arange(0.0,20.0,0.1)
y = function_1(x)

# function_1在x=5处的切线
tf = tangent_line(function_1,5)
y2 = tf(x)

plt.plot(x,y)
plt.plot(x,y2)

plt.show()